package fileselection;

import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

public class MyFrame extends JFrame {
    JTextField jTextField = new JTextField(10);
    JButton jButton = new JButton("测试");
    public MyFrame(String tittle){
        super(tittle);

        JPanel root = new JPanel();
        this.setContentPane(root);

//        JTextField jTextField = new JTextField(10);
//        JButton jButton = new JButton("测试");
        root.add(jTextField);
        root.add(jButton);

        jButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                test3();
            }
        });
    }

    //showOpenDialog ()
    private void test1(){
        JFileChooser chooser = new JFileChooser();
        //文件后缀名过滤器
        /**
         * public FileNameExtensionFilter(String description,
         *                                String... extensions)
         * 创建具有指定描述和文件扩展名的FileNameExtensionFilter 。 返回的FileNameExtensionFilter将接受所有目录以及文件扩展名包含在extensions任何文件。
         * 参数:
         * description - 过滤器的文本描述，可能是 null
         * extensions - 接受的文件扩展名
         */
        FileNameExtensionFilter filter = new FileNameExtensionFilter("图片文件","jpg","png");
        chooser.setFileFilter(filter);

        //显示对话框
        /**
         * showOpenDialog
         * public int showOpenDialog(Component parent) throws HeadlessException
         * 弹出“打开文件”文件选择器对话框。 请注意，批准按钮中显示的文本由L＆F确定。
         * 参数
         * parent - 对话框的父组件，可以是null ; 详情请见showDialog
         * 结果
         * 弹出窗口中文件选择器的返回状态：
         * JFileChooser.CANCEL_OPTION   ->1(ctrl+左键查看)
         * JFileChooser.APPROVE_OPTION  ->0
         * JFileChooser.ERROR_OPTION如果发生错误或对话框被解除  ->-1
         */
        int ret = chooser.showOpenDialog(this);
        //获取用户选择的结果
        if(ret == JFileChooser.APPROVE_OPTION){
            File file = chooser.getSelectedFile();
            jTextField.setText(file.getAbsolutePath());
        }

    }


    //showSaveDialog ()
    private void test2(){
        JFileChooser chooser = new JFileChooser();
        FileNameExtensionFilter filter = new FileNameExtensionFilter("XML文件","xml");
        int ret = chooser.showOpenDialog(this);
        if (ret ==JFileChooser.APPROVE_OPTION){
            File file = chooser.getSelectedFile();
            jTextField.setText(file.getAbsolutePath());
        }
    }

    //showOpenDialog () / DIRECTORIES.ONLY
    private void test3(){
        JFileChooser chooser = new JFileChooser();
        chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        int ret = chooser.showOpenDialog(this);
        if (ret ==JFileChooser.APPROVE_OPTION){
            File dir = chooser.getSelectedFile();
            jTextField.setText(dir.getAbsolutePath());
        }
    }
}
